// 引入封装的 AJAX 请求工具
import rxAjax from '@/assets/js/ajax.js';

/**
 * 知识库管理 API 接口对象
 * 包含了与知识库管理相关的所有 API 请求方法
 */
export const KnowledgeBaseManageApi = {
    // 基础 URL，用于构建具体的 API 请求 URL
    baseUrl: '/api-knowledge/knowledge/core/knowledgeBaseManage',
    // 导出列表的 URL
    exportUrl: '/api-knowledge/knowledge/core/knowledgeBaseManage/listExport',

    /**
     * 查询知识库列表
     * @param {Object} parameter - 查询所需的参数对象
     * @returns {Promise<Object>} - 返回包含查询结果的 Promise 对象
     */
    query: async (parameter) => {
        const url = `${KnowledgeBaseManageApi.baseUrl}/query`;
        try {
            const res = await rxAjax.postJson(url, parameter);
            return res.result;
        } catch (error) {
            console.error('查询知识库列表时出错:', error);
            throw error;
        }
    },

    /**
     * 获取单条知识库记录
     * @param {string} pkId - 知识库记录的主键 ID
     * @returns {Promise<Object>} - 返回包含单条记录的 Promise 对象
     */
    get: async (pkId) => {
        const url = `${KnowledgeBaseManageApi.baseUrl}/get?pkId=${pkId}`;
        try {
            return await rxAjax.get(url);
        } catch (error) {
            console.error('获取单条知识库记录时出错:', error);
            throw error;
        }
    },

    /**
     * 获取知识库列表
     * @param {string} name - 知识库名称
     * @returns {Promise<Object>} - 返回记录的 Promise 对象
     */
    getKnowledgeBaseList: async (name) => {
        const url = `${KnowledgeBaseManageApi.baseUrl}/getKnowledgeBaseList?name=${name}`;
        try {
            return await rxAjax.get(url);
        } catch (error) {
            console.error('获取知识库记录时出错:', error);
            throw error;
        }
    },

    /**
     * 保存知识库数据
     * @param {Object} parameter - 需要保存的知识库数据对象
     * @returns {Promise<Object>} - 返回包含保存结果的 Promise 对象
     */
    save: async (parameter) => {
        const url = `${KnowledgeBaseManageApi.baseUrl}/save`;
        try {
            return await rxAjax.postJson(url, parameter);
        } catch (error) {
            console.error('保存知识库数据时出错:', error);
            throw error;
        }
    },

    /**
     * 删除知识库数据
     * @param {Object} parameter - 需要删除的知识库数据对象
     * @returns {Promise<Object>} - 返回包含删除结果的 Promise 对象
     */
    del: async (parameter) => {
        const url = `${KnowledgeBaseManageApi.baseUrl}/del`;
        try {
            return await rxAjax.postUrl(url, parameter);
        } catch (error) {
            console.error('删除知识库数据时出错:', error);
            throw error;
        }
    },
    detail: async (pkId) => {
        const url = `${KnowledgeBaseManageApi.baseUrl}/getBaseDetailsById?pkId=${pkId}`;
        try {
            return await rxAjax.get(url);
        } catch (error) {
            console.error('获取单条知识库记录时出错:', error);
            throw error;
        }
    },
    suggestedQuestions: async (parameter) => {
        const url = `${KnowledgeBaseManageApi.baseUrl}/suggested?messageId=${messageId}pkId=${pkId}`;
        try {
            return await rxAjax.get(url);
        } catch (error) {
            console.error('获取单条知识库记录时出错:', error);
            throw error;
        }
    },
};

// 导出默认的 API 接口对象
export default KnowledgeBaseManageApi;
